package com.project.mapper;


import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.project.domain.entity.DmProjectType;
import com.project.domain.entity.SyntProject;
import com.project.domain.vo.DmProjectTypeVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 项目分类列Mapper接口
 *
 * @author ruoyi
 * @date 2025-02-08
 */
public interface ProjectTypeMapper extends BaseMapper<DmProjectType> {


    /**
     * 查询项目分类列列表
     *
     * @param queryWrapper
     * @return 项目分类列集合
     */
    List<DmProjectType> selectDmProjectTypeList(@Param(Constants.WRAPPER) Wrapper<DmProjectType> queryWrapper);

    List<DmProjectTypeVo> selectDmProjectTypeList_haveCount(@Param(Constants.WRAPPER) Wrapper<DmProjectType> queryWrapper);

    /**
     * 获取最大的科目编号前缀
     * @param projectClass projectClass 区分横向/纵向/校级
     * @param typeLevel 层级分类
     * @return
     */
    String getMaxPrefix(@Param("projectClass") String projectClass,
                        @Param("typeLevel") String typeLevel,
                        @Param("upCode")String upCode);

    /**
     * 获取当前分类下的所有子分类的code(包含子分类的子分类 一直到最末节点)
     * @param id
     * @return
     */
  List<String>  getAllChildCodes(@Param("id")String id);

    /**
     * 获取当前分类下的所有子分类(包含子分类的子分类 一直到最末节点)
     * @param id
     * @return
     */
  List<DmProjectType>  getAllChildTypes(@Param("id")String id);

    /**
     * 根据项目id集合,获取所有项目(分类 点击数量时调用)
     * @param allChildCodes
     * @return
     */
  List<SyntProject>  getUseProjectList(@Param("allChildCodes")List<String> allChildCodes);

}
